package org.dromara.common.core.xss;

import cn.hutool.core.util.ReUtil;
import cn.hutool.http.HtmlUtil;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：自定义xss校验注解实现
 */
/**
 * XssValidator类用于校验字符串是否包含XSS攻击脚本
 * 它实现了ConstraintValidator接口，用于在Java Bean验证中检查Xss注解的字符串
 */
public class XssValidator implements ConstraintValidator<Xss, String> {

    /**
     * 检查给定的字符串是否包含HTML标记或脚本
     *
     * @param value 待验证的字符串
     * @param constraintValidatorContext 验证上下文，用于提供验证执行的上下文信息
     * @return 如果字符串不包含HTML标记或脚本，则返回true；否则返回false
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        // 使用正则表达式检查字符串中是否包含HTML标记
        return !ReUtil.contains(HtmlUtil.RE_HTML_MARK, value);
    }

}
